Resumen

Row

Última actualización de datos realizada el 2020-11-10 con base en los datos publicados por el Ministerio de Salud de Costa Rica

Row

Casos positivos

118,566

Casos activos

44,123 (37.2%)

Casos recuperados

72,941 (61.5%)

Casos fallecidos

1,502 (1.3%)

Row

Hospitalizados

492

En salón

294 (59.8%)

Alerta de capacidad en salón UCI

Row

Tabla de cantidades de casos en distritos

Row {data-width=400} Row

Casos positivos

Row

Última actualización de datos realizada el 2020-11-10 con base en los datos publicados por el Ministerio de Salud de Costa Rica

Row

Casos positivos

118,566

Row

Mapa de casos positivos en distritos

Gráfico de cantones con mayor cantidad de casos positivos

Casos activos

Row

Última actualización de datos realizada el 2020-11-10 con base en los datos publicados por el Ministerio de Salud de Costa Rica

Row

Casos activos

44,123

Row

Mapa de casos activos en distritos

Gráfico de cantones con mayor cantidad de casos activos

Casos recuperados

Row

Última actualización de datos realizada el 2020-11-10 con base en los datos publicados por el Ministerio de Salud de Costa Rica.

Row

Casos recuperados

72,941

Row

Mapa de casos recuperados en distritos

Gráfico de cantones con mayor cantidad de casos recuperados

Casos fallecidos

Row

Última actualización de datos realizada el 2020-11-10 con base en los datos publicados por el Ministerio de Salud de Costa Rica.

Row

Casos Fallecidos

1,502

Row

Mapa de casos fallecidos en cantones

Gráfico de cantones con mayor cantidad de casos fallecidos

Mapa de calor

Row

Última actualización de datos realizada el 2020-11-10 con base en los datos publicados por el Ministerio de Salud de Costa Rica.

Row

Casos en distritos

---
title: "Estado del COVID-19 en Costa Rica. Realizado por: Katherine Urbina y Jorge Masís"

output: 
  flexdashboard::flex_dashboard:
    orientation: rows
    social: menu
    source_code: embed
    vertical_layout: fill    
---

```{r setup, include=FALSE}

#-------------------- Paquetes --------------------

library(flexdashboard)
library(tidyverse)
library(plotly)
library(dplyr)
library(tidyr)
library(sf)
library(leaflet)
library(leaflet.extras)

#-------------------- Colores ---------------------

color_positivos <- '#CCCC00'
color_activos <- '#FF0033'
color_recuperados <- '#66CC33'
color_fallecidos <- '#999999'

color_nuevos_positivos <- 'red'

color_hospitalizados <- '#3399CC'
color_salon <- '#0033FF'
color_uci <- '#0033CC'

#--------------------- Íconos ---------------------

icono_positivos <- 'fas fa-file-medical'
icono_activos <- 'fas fa-exclamation-triangle'
icono_recuperados <- 'fas fa-heart'
icono_fallecidos <- 'fas fa-heartbeat'

icono_nuevos_positivos <- 'fas fa-first-aid'

icono_hospitalizados <- 'fas fa-ambulance'
icono_salon <- 'fas fa-hospital'
icono_uci <- 'fas fa-procedures'

#--------------- Otros parámetros -----------------

# Separador para lectura de datos CSV
caracter_separador <- ','
```


```{r, include=FALSE}
#--------------- Archivos de datos ----------------

archivo_general_pais <- 'https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/covid19/ms/11_10_CSV_GENERAL.csv'

archivo_positivos_cantones <- 'https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/covid19/ms/11_10_CSV_POSITIVOS.csv'
archivo_activos_cantones <- 'https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/covid19/ms/11_10_CSV_ACTIVOS.csv'
archivo_recuperados_cantones <- 'https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/covid19/ms/11_10_CSV_RECUP.csv'
archivo_fallecidos_cantones <- 'https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/covid19/ms/11_10_CSV_FALLECIDOS.csv'
```

```{r, include=FALSE}
#---------------------- Datos ---------------------

# Data frame de datos generales por país
df_general_pais <- read.csv(archivo_general_pais, sep = caracter_separador)
df_general_pais$FECHA <- as.Date(df_general_pais$FECHA, "%d/%m/%Y")

# Data frame de datos generales por país en la última fecha
df_general_pais_ultima_fecha <- 
  df_general_pais %>%
  filter(FECHA == max(FECHA, na.rm = TRUE))

# Data frame de casos positivos por cantón
df_positivos_cantones_ancho <- read.csv(archivo_positivos_cantones, sep = caracter_separador)
df_positivos_cantones <-
  df_positivos_cantones_ancho %>%
  pivot_longer(cols = c(-cod_provin, -provincia, -cod_canton, -canton), names_to = "fecha", values_to = "positivos")
df_positivos_cantones$fecha <- as.Date(df_positivos_cantones$fecha, "X%d.%m.%Y")

# Data frame de casos positivos por cantón en la última fecha
df_positivos_cantones_ultima_fecha <- 
  df_positivos_cantones %>%
  filter(fecha == max(fecha, na.rm = TRUE)) %>%
  select(cod_canton, positivos)

# Data frame de casos activos por cantón
df_activos_cantones_ancho <- read.csv(archivo_activos_cantones, sep = caracter_separador)
df_activos_cantones <-
  df_activos_cantones_ancho %>%
  pivot_longer(cols = c(-cod_provin, -provincia, -cod_canton, -canton), names_to = "fecha", values_to = "activos")
df_activos_cantones$fecha <- as.Date(df_activos_cantones$fecha, "X%d.%m.%Y")

# Data frame de casos activos por cantón en la última fecha
df_activos_cantones_ultima_fecha <- 
  df_activos_cantones %>%
  filter(fecha == max(fecha, na.rm = TRUE)) %>%
  select(cod_canton, activos)

# Data frame de casos recuperados por cantón

df_recuperados_cantones_ancho <- read.csv(archivo_recuperados_cantones, sep = caracter_separador)
df_recuperados_cantones <-
  df_recuperados_cantones_ancho %>%
  pivot_longer(cols = c(-cod_provin, -provincia, -cod_canton, -canton), names_to = "fecha", values_to = "recuperados")
df_recuperados_cantones$fecha <- as.Date(df_recuperados_cantones$fecha, "X%d.%m.%Y")

# Data frame de casos recuperados por cantón en la última fecha
df_recuperados_cantones_ultima_fecha <- 
  df_recuperados_cantones %>%
  filter(fecha == max(fecha, na.rm = TRUE)) %>%
  select(cod_canton, recuperados)

# Data frame de casos fallecidos por cantón

df_fallecidos_cantones_ancho <- read.csv(archivo_fallecidos_cantones, sep = caracter_separador)
df_fallecidos_cantones <-
  df_fallecidos_cantones_ancho %>%
  pivot_longer(cols = c(-cod_provin, -provincia, -cod_canton, -canton), names_to = "fecha", values_to = "fallecidos")
df_fallecidos_cantones$fecha <- as.Date(df_fallecidos_cantones$fecha, "X%d.%m.%Y")

# Data frame de casos recuperados por cantón en la última fecha
df_fallecidos_cantones_ultima_fecha <- 
  df_fallecidos_cantones %>%
  filter(fecha == max(fecha, na.rm = TRUE)) %>%
  select(cod_canton, fallecidos)

# Objeto sf de cantones
sf_cantones <- st_read('https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/delimitacion-territorial-administrativa/cr/ign/cr_limite_cantonal_ign_wgs84.geojson')

# Objeto sf de casos positivos en cantones en la última fecha
sf_positivos_cantones_ultima_fecha <-
  left_join(sf_cantones, df_positivos_cantones_ultima_fecha, by = c('cod_canton')) %>%
  arrange(desc(positivos))
# Objeto sf de casos activos en cantones en la última fecha
sf_activos_cantones_ultima_fecha <-
  left_join(sf_cantones, df_activos_cantones_ultima_fecha, by = c('cod_canton')) %>%
  arrange(desc(activos))
# Objeto sf de casos recuperados en cantones en la última fecha
sf_recuperados_cantones_ultima_fecha <-
  left_join(sf_cantones, df_recuperados_cantones_ultima_fecha, by = c('cod_canton')) %>%
  arrange(desc(recuperados))
# Objeto sf de casos fallecidos en cantones en la última fecha
sf_fallecidos_cantones_ultima_fecha <-
  left_join(sf_cantones, df_fallecidos_cantones_ultima_fecha, by = c('cod_canton')) %>%
  arrange(desc(fallecidos))

```
```{r, include=FALSE}
#---------------------- Datos de distritos ---------------------
archivo_general_distritos_old <- 'https://raw.githubusercontent.com/geoprocesamiento-2020i/datos/master/covid19/ms/07_02_CSV_GENERAL_DISTRITOS.csv'
archivo_general_distritos <- 'https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/covid19/ms/11_17_CSV_DISTRITOS.csv'
# Carga del archivo CSV en un data frame
df_general_distritos_sucio_old <- read.csv(archivo_general_distritos_old)
df_general_distritos_sucio <- read.csv(archivo_general_distritos)
# Eliminación de filas y columnas que corresponden a encabezados, totales, etc.
df_general_distritos_ultima_fecha_old <- df_general_distritos_sucio_old[-c(1:5), -c(1, 3, 10, 11)]
df_general_distritos_ultima_fecha <- df_general_distritos_sucio[-c(1:7), -c(1, 2, 4)]
# Cambio de nombre de las columnas
df_general_distritos_ultima_fecha <- 
  df_general_distritos_ultima_fecha %>%
  rename(provincia = X.2,
         canton = X.4,
         distrito = X.5,
         positivos = X.6,
         recuperados = X.7,
         fallecidos = X.8,
         activos = X.9
  ) %>%  
  mutate_all(funs(sub("^\\s*$", NA, .))) %>% # Se llenan con NA las celdas con espacios vacíos
  mutate(distrito = if_else(distrito == "El Carmen", "Carmen", distrito)) %>%
  mutate(distrito = if_else(distrito == "Valle de La Estrella", "Valle La Estrella", distrito)) %>%
  mutate(distrito = if_else(distrito == "La Amistad", "La  Amistad", distrito)) %>%
  fill(c(1,2)) # Se rellenan "hacia abajo" las columnas de provincia y cantón con valor NA
# Borrado de las filas con valor de NA o de "Sin información de distrito" en la columna de distrito
df_general_distritos_ultima_fecha <- df_general_distritos_ultima_fecha[!is.na(df_general_distritos_ultima_fecha$distrito), ]
df_general_distritos_ultima_fecha <- df_general_distritos_ultima_fecha[df_general_distritos_ultima_fecha$distrito != 'Sin información de distrito', ]
# Conversión a integer de los tipos de datos de las columnas con cifras
df_general_distritos_ultima_fecha$positivos <- as.integer(df_general_distritos_ultima_fecha$positivos)
df_general_distritos_ultima_fecha$recuperados <- as.integer(df_general_distritos_ultima_fecha$recuperados)
df_general_distritos_ultima_fecha$fallecidos <- as.integer(df_general_distritos_ultima_fecha$fallecidos)
df_general_distritos_ultima_fecha$activos <- as.integer(df_general_distritos_ultima_fecha$activos)
# Objeto sf de distritos
# Capa simplificada
 sf_distritos <- st_read('https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/delimitacion-territorial-administrativa/cr/ign/cr_limite_distrital_ign_wgs84.geojson')
# Capa detallada
#sf_distritos <- st_read('https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/delimitacion-territorial-administrativa/cr/ign/cr_distritos_ign_wgs84.geojson')
# Objeto sf de casos positivos en distritos en la última fecha
sf_general_distritos_ultima_fecha <-
  left_join(sf_distritos, df_general_distritos_ultima_fecha, by = c('provincia', 'canton', 'distrito'))
```

Resumen
=======================================================================
Row {data-height=10}
-----------------------------------------------------------------------
### **Última actualización de datos realizada el `r  df_general_pais_ultima_fecha$FECHA` con base en los [datos publicados por el Ministerio de Salud de Costa Rica](http://geovision.uned.ac.cr/oges/)**

Row {data-height=100}
-----------------------------------------------------------------------

### Casos positivos {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$positivos, big.mark = ","), "", sep = " "), 
         caption = "Total de casos positivos", 
         icon = icono_positivos, 
         color = color_positivos
)
```

### Casos activos {.value-box}

```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$activos, big.mark = ","), " (",
                       round(100 * df_general_pais_ultima_fecha$activos / df_general_pais_ultima_fecha$positivos, 1), 
                       "%)", sep = ""), 
         caption = "Total de casos activos",
         icon = icono_activos, 
         color = color_activos
)
```

### Casos recuperados {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$RECUPERADOS, big.mark = ","), " (",
                       round(100 * df_general_pais_ultima_fecha$RECUPERADOS / df_general_pais_ultima_fecha$positivos, 1), 
                       "%)", sep = ""), 
         caption = "Total de casos recuperados",
         icon = icono_recuperados, 
         color = color_recuperados
)
```

### Casos fallecidos {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$fallecidos, big.mark = ","), " (",
                       round(100 * df_general_pais_ultima_fecha$fallecidos / df_general_pais_ultima_fecha$positivos, 1), 
                       "%)", sep = ""), 
         caption = "Total de casos fallecidos",
         icon = icono_fallecidos, 
         color = color_fallecidos
)
```


Row
-----------------------------------------------------------------------

### Hospitalizados {.value-box}

```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$hospital, big.mark = ","), "", sep = " "), 
         caption = "Total de hospitalizados", 
         icon = icono_hospitalizados,
         color = color_hospitalizados
)
```

### En salón {.value-box}

```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$salon, big.mark = ","), " (",
                       round(100 * df_general_pais_ultima_fecha$salon / df_general_pais_ultima_fecha$hospital, 1), 
                       "%)", sep = ""), 
         caption = "Hospitalizados en salón",
         icon = icono_salon, 
         color = color_salon
)
```

### Alerta de capacidad en salón UCI
```{r}
Capacidad_UCI <- df_general_pais_ultima_fecha$promedio_UCI
gauge(Capacidad_UCI, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(0, 35), warning = c(36, 70), danger = c(71, 100)
))
```

Row {data-width=100}
-----------------------------------------------------------------------

### Tabla de cantidades de casos en distritos

```{r}
st_drop_geometry(sf_general_distritos_ultima_fecha) %>% 
  select(Provincia = provincia, Canton = canton,  Distritos = distrito, Positivos = positivos, Activos = activos, Recuperados = recuperados, Fallecidos = fallecidos) %>%
  DT::datatable(rownames = FALSE,
                options = list(searchHighlight = TRUE, 
                               language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
                               )
  )
```

Row {data-width=400} Row {data-height=5} 
-----------------------------------------------------------------------


Casos positivos
=======================================================================
Row {data-height=10}
-----------------------------------------------------------------------
### **Última actualización de datos realizada el `r  df_general_pais_ultima_fecha$FECHA` con base en los [datos publicados por el Ministerio de Salud de Costa Rica](http://geovision.uned.ac.cr/oges/)**


Row
-----------------------------------------------------------------------

### Casos positivos {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$positivos, big.mark = ","), "", sep = " "), 
         caption = "Total de casos positivos", 
         icon = icono_positivos, 
         color = color_positivos
)
```

Row {data-width=400}
-----------------------------------------------------------------------

### Mapa de casos positivos en distritos
```{r}
p_bins <- c(0,300,800,1500,5000,15000,Inf)
paleta_azul <- colorBin(palette = "YlOrBr", 
                        domain = sf_general_distritos_ultima_fecha$positivos,
                        bins = p_bins
               )

leaflet_distritos <- leaflet(sf_general_distritos_ultima_fecha) %>% 
  fitBounds(lng1 = -86, lng2 = -82, lat1 = 8, lat2 = 11) %>%
  addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
  addPolygons(fillColor = ~paleta_azul(positivos), stroke=T, fillOpacity = 1,
              color="black", weight=0.2, opacity= 0.5,
              group = "Distritos",
              popup = paste("Cantón: ", sf_general_distritos_ultima_fecha$canton, "",
                            "Distrito: ", sf_general_distritos_ultima_fecha$distrito, "",
                            "Positivos: ", sf_general_distritos_ultima_fecha$positivos
                            )
  ) %>%
  addLegend("bottomright", pal = paleta_azul, values = ~positivos,
    title = "Casos positivos",
    opacity = 1
  ) %>%  
  addLayersControl(
    baseGroups = c("OpenStreetMap"),
    overlayGroups = c("Distrito"),
    options = layersControlOptions(collapsed = TRUE)    
  ) %>%  
  addMiniMap(
    toggleDisplay = TRUE,
    position = "bottomleft",
    tiles = providers$OpenStreetMap.Mapnik
  ) %>%
  addScaleBar()

# Despliegue del mapa
leaflet_distritos
```

### Gráfico de cantones con mayor cantidad de casos positivos
```{r}

positivos_grafico <- c ("rgb(84,48,5)", "rgb(140,81,10)", "rgb(191,129,45)", "rgb(223,194,125)", "rgb(246,232,195)", "rgb(245,245,245)", "rgb(199,234,229)", "rgb(128,205,193)", "rgb(53,151,143)", "rgb(1,102,94)", "rgb(0,60,48)")

positivos_pie <- st_drop_geometry(sf_general_distritos_ultima_fecha) %>% 
  arrange(desc(positivos)) %>%  
  top_n(n = 10, wt = positivos) %>%  
plot_ly(labels = ~ distrito, 
        Values = ~ positivos, 
        type = "pie", 
        text = ~positivos,
        textposition = 'auto',
        marker = list(colors = "positivos_grafico", line = list(color = '#FFFFFF', width = 1)
                      )) %>%
layout(yaxis = list(title = "Cantidad de casos positivos"),
       xaxis = list(title = ""),
       margin = list(l = 10,
                     r = 10,
                     b = 10,
                     t = 10,
                     pad = 2
                )
)
```


Casos activos
=======================================================================
Row {data-height=10}
-----------------------------------------------------------------------
### **Última actualización de datos realizada el `r  df_general_pais_ultima_fecha$FECHA` con base en los [datos publicados por el Ministerio de Salud de Costa Rica](http://geovision.uned.ac.cr/oges/)**

Row
-----------------------------------------------------------------------
### Casos activos {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$activos, big.mark = ","), "", sep = " "), 
         caption = "Total de casos activos", 
         icon = icono_activos, 
         color = color_activos
)
```

Row {data-width=400}
-----------------------------------------------------------------------

### Mapa de casos activos en distritos
```{r}
a_bins <- c(0,100,300,500,1500,3000,5000,Inf)
paleta_activos <- colorBin(palette = "Reds", 
                           domain = sf_general_distritos_ultima_fecha$activos,
                           bins = a_bins
)

leaflet_distritos <- leaflet(sf_general_distritos_ultima_fecha) %>% 
  fitBounds(lng1 = -86, lng2 = -82, lat1 = 8, lat2 = 11) %>%
  addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
  addPolygons(fillColor = ~paleta_activos(activos), stroke=T, fillOpacity = 1,
              color="black", weight=0.2, opacity= 0.5,
              group = "Distritos",
              popup = paste("Cantón: ", sf_general_distritos_ultima_fecha$canton, "",
                            "Distrito: ", sf_general_distritos_ultima_fecha$distrito, "",
                            "Activos: ", sf_general_distritos_ultima_fecha$activos
              )
  ) %>%
  addLegend("bottomright", pal = paleta_activos, values = ~activos,
            title = "Casos activos",
            opacity = 1
  ) %>%  
  addLayersControl(
    baseGroups = c("OpenStreetMap"),
    overlayGroups = c("Distritos"),
    options = layersControlOptions(collapsed = TRUE)    
  ) %>%  
  addMiniMap(
    toggleDisplay = TRUE,
    position = "bottomleft",
    tiles = providers$OpenStreetMap.Mapnik
  )%>%
  addScaleBar()
  
# Despliegue del mapa
leaflet_distritos
```

### Gráfico de cantones con mayor cantidad de casos activos
```{r}
st_drop_geometry(sf_activos_cantones_ultima_fecha) %>%
mutate(canton = factor(canton, levels = canton)) %>%
top_n(n = 10, wt = activos) %>%  
plot_ly(x = ~ canton, 
        y = ~ activos, 
        type = "bar", 
        text = ~ activos,
        textposition = 'auto',
        marker = list(color = color_activos)
) %>%
layout(yaxis = list(title = "Cantidad de casos activos"),
       xaxis = list(title = ""),
       margin = list(l = 10,
                     r = 10,
                     b = 10,
                     t = 10,
                     pad = 2
                )
) 


```


Casos recuperados
=======================================================================
Row {data-height=10}
-----------------------------------------------------------------------
### **Última actualización de datos realizada el `r  df_general_pais_ultima_fecha$FECHA` con base en los [datos publicados por el Ministerio de Salud de Costa Rica](http://geovision.uned.ac.cr/oges/)**.

  Row
-----------------------------------------------------------------------
### Casos recuperados {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$RECUPERADOS, big.mark = ","), "", sep = " "), 
         caption = "Total de casos recuperados", 
         icon = icono_recuperados, 
         color = color_recuperados
)
```

Row {data-width=400}
-----------------------------------------------------------------------
### Mapa de casos recuperados en distritos
```{r}
r_bins <- c(0,100,500,1000,3000,4000,Inf)
paleta_recuperados <- colorBin(palette = "Greens", 
                               domain = sf_general_distritos_ultima_fecha$recuperados,
                               bins = r_bins
)

leaflet_distritos <- leaflet(sf_general_distritos_ultima_fecha) %>% 
  fitBounds(lng1 = -86, lng2 = -82, lat1 = 8, lat2 = 11) %>%
  addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
  addPolygons(fillColor = ~paleta_recuperados(recuperados), stroke=T, fillOpacity = 1,
              color="black", weight=0.2, opacity= 0.5,
              group = "Distritos",
              popup = paste("Cantón: ", sf_general_distritos_ultima_fecha$canton, "",
                            "Distrito: ", sf_general_distritos_ultima_fecha$distrito, "",
                            "Recuperados: ", sf_general_distritos_ultima_fecha$recuperados
              )
  ) %>%
  addLegend("bottomright", pal = paleta_recuperados, values = ~recuperados,
            title = "Casos recuperados",
            opacity = 1
  ) %>%  
  addLayersControl(
    baseGroups = c("OpenStreetMap"),
    overlayGroups = c("Distrito"),
    options = layersControlOptions(collapsed = TRUE)    
  ) %>%  
  addMiniMap(
    toggleDisplay = TRUE,
    position = "bottomleft",
    tiles = providers$OpenStreetMap.Mapnik
  )%>%
  addScaleBar()

# Despliegue del mapa
leaflet_distritos
```

### Gráfico de cantones con mayor cantidad de casos recuperados
```{r}
st_drop_geometry(sf_recuperados_cantones_ultima_fecha) %>%
  mutate(canton = factor(canton, levels = canton)) %>%
  top_n(n = 10, wt = recuperados) %>%  
  plot_ly(x = ~ canton, 
          y = ~ recuperados, 
          type = "bar", 
          text = ~ recuperados,
          textposition = 'auto',
          marker = list(color = color_recuperados)
  ) %>%
  layout(yaxis = list(title = "Cantidad de personas recuperadas"),
         xaxis = list(title = ""),
         margin = list(l = 10,
                       r = 10,
                       b = 10,
                       t = 10,
                       pad = 2
         )
  ) 
```

Casos fallecidos
=======================================================================
Row {data-height=10}
-----------------------------------------------------------------------
### **Última actualización de datos realizada el `r  df_general_pais_ultima_fecha$FECHA` con base en los [datos publicados por el Ministerio de Salud de Costa Rica](http://geovision.uned.ac.cr/oges/)**.

Row
-----------------------------------------------------------------------
### Casos Fallecidos {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$fallecidos, big.mark = ","), "", sep = " "), 
         caption = "Total de casos fallecidos", 
         icon = icono_fallecidos, 
         color = color_fallecidos
)
```

Row {data-width=400}
-----------------------------------------------------------------------

### Mapa de casos fallecidos en cantones
```{r}
f_bins <- c(0,5,10,25,50,150,Inf)
paleta_fallecidos <- colorBin(palette = "Greys", 
                           domain = sf_general_distritos_ultima_fecha$fallecidos,
                           bins = f_bins
)

leaflet_distritos <- leaflet(sf_general_distritos_ultima_fecha) %>% 
  fitBounds(lng1 = -86, lng2 = -82, lat1 = 8, lat2 = 11) %>%
  addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
  addPolygons(fillColor = ~paleta_fallecidos(fallecidos), stroke=T, fillOpacity = 1,
              color="black", weight=0.2, opacity= 0.5,
              group = "Distrito",
              popup = paste("Cantón: ", sf_general_distritos_ultima_fecha$canton, "",
                            "Distrito: ", sf_general_distritos_ultima_fecha$distrito, "",
                            "Fallecidos: ", sf_general_distritos_ultima_fecha$fallecidos)
  ) %>%
  addLegend("bottomright", pal = paleta_fallecidos, values = ~fallecidos,
            title = "Casos fallecidos",
            opacity = 1
  ) %>%  
  addLayersControl(
    baseGroups = c("OpenStreetMap"),
    overlayGroups = c("Distrito"),
    options = layersControlOptions(collapsed = TRUE)    
  ) %>%  
  addMiniMap(
    toggleDisplay = TRUE,
    position = "bottomleft",
    tiles = providers$OpenStreetMap.Mapnik
  )%>%
  addScaleBar()
  
# Despliegue del mapa
leaflet_distritos
```

### Gráfico de cantones con mayor cantidad de casos fallecidos
```{r}
st_drop_geometry(sf_fallecidos_cantones_ultima_fecha) %>%
mutate(canton = factor(canton, levels = canton)) %>%
top_n(n = 10, wt = fallecidos) %>%  
plot_ly(x = ~ canton, 
        y = ~ fallecidos, 
        type = "bar", 
        text = ~ fallecidos,
        textposition = 'auto',
        marker = list(color = color_fallecidos)
) %>%
layout(yaxis = list(title = "Cantidad de casos fallecidos"),
       xaxis = list(title = ""),
       margin = list(l = 10,
                     r = 10,
                     b = 10,
                     t = 10,
                     pad = 2
                )
) 
```

Mapa de calor
=======================================================================
Row {data-height=10}
-----------------------------------------------------------------------
### **Última actualización de datos realizada el `r  df_general_pais_ultima_fecha$FECHA` con base en los [datos publicados por el Ministerio de Salud de Costa Rica](http://geovision.uned.ac.cr/oges/)**.

Row {data-width=400}
-----------------------------------------------------------------------

### Casos en distritos
```{r}
# Cálculo de centroides de los distritos
sf_distritos_centroides = st_centroid(sf_general_distritos_ultima_fecha, of_largest_polygon = FALSE)
# Separación de los datos de longitud y latitud en columnas distintas
separated_coord <- sf_distritos_centroides %>%
  mutate(long = unlist(map(sf_distritos_centroides$geometry,1)),
         lat = unlist(map(sf_distritos_centroides$geometry,2))
         )
# Mapa de calor
leaflet() %>%
  fitBounds(lng1 = -86, lng2 = -82, lat1 = 8, lat2 = 11) %>%
  addProviderTiles(providers$Stamen.TonerLite, group = "Stamen Toner Lite") %>%
  addProviderTiles(providers$CartoDB.DarkMatter, group = "CartoDB DarkMatter") %>%
  addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
  addPolygons(
    data = sf_general_distritos_ultima_fecha,
    stroke=T, fillOpacity = 0,
    color="black", weight=0.2, opacity= 1.0,
    group = "Distritos",
    popup = paste(
      "Provincia: ", sf_general_distritos_ultima_fecha$provincia, "
", "Cantón: ", sf_general_distritos_ultima_fecha$canton, "
", "Distrito: ", sf_general_distritos_ultima_fecha$distrito, "
", "Casos positivos: ", sf_general_distritos_ultima_fecha$positivos, "
", "Casos activos: ", sf_general_distritos_ultima_fecha$activos, "
", "Casos recuperados: ", sf_general_distritos_ultima_fecha$recuperados, "
", "Casos fallecidos: ", sf_general_distritos_ultima_fecha$fallecidos ) ) %>% addHeatmap( data = separated_coord, lng = ~long, lat = ~lat, intensity = ~positivos, blur = 10, max= max(separated_coord$positivos), radius = 15, group = "Casos positivos" ) %>% addHeatmap( data = separated_coord, lng = ~long, lat = ~lat, intensity = ~activos, blur = 10, max= max(separated_coord$activos), radius = 15, group = "Casos activos" ) %>% addHeatmap( data = separated_coord, lng = ~long, lat = ~lat, intensity = ~recuperados, blur = 10, max= max(separated_coord$recuperados), radius = 15, group = "Casos recuperados" ) %>% addHeatmap( data = separated_coord, lng = ~long, lat = ~lat, intensity = ~fallecidos, blur = 10, max= max(separated_coord$fallecidos), radius = 15, group = "Casos fallecidos" ) %>% addLayersControl( baseGroups = c("Stamen Toner Lite", "CartoDB DarkMatter", "OpenStreetMap"), overlayGroups = c("Distritos", "Casos positivos", "Casos activos", "Casos recuperados", "Casos fallecidos"), options = layersControlOptions(collapsed = TRUE) ) %>% addScaleBar() %>% hideGroup("Distritos") %>% hideGroup("Casos activos") %>% hideGroup("Casos recuperados") %>% hideGroup("Casos fallecidos") ```